Praca s viacerymi objektami naraz
Otázka od: Martin Kasman
7. 1. 2004 10:25
Chcem vsetkym objektom typu tpanel vo formulari zmenit farbu na zelenu bez
toho aby som vedel ich nazvy. Ako na to?
Vdaka za kazdu radu.
Odpovedá: Jan Fiala
7. 1. 2004 10:13
7.1.2004 Martin Kasman:
> Chcem vsetkym objektom typu tpanel vo formulari zmenit farbu na zelenu bez
> toho aby som vedel ich nazvy. Ako na to?
for i := 0 to Component.count - 1 do
if Components[i] is TPanel then
TPanel(Components[i]).Color := clGreen;
--
Jan Fiala
mailto:jan.fiala@wo.cz
Odpovedá: Jakub Dusek
7. 1. 2004 11:39
var i : Integer
begin
for i := 0 to Form1.ControlCount - 1 do
if Form1.Controls[i] is TPanel then
TPanel(Form1.Controls[i]).Color := clGreen;
end;
Jakub Dusek
----------------------------------------------------------------------
web: http://www.corexpert.com, mobile: +420 604 615 795, ICQ: 86063232
odesilani smsek, vizitek, log a melodii, snadna integrace do Vaseho IS
=> Sms GateKeeper, Sms GateKeeper Service
======================================================================
Wednesday, January 7, 2004, 9:38:26 AM, you wrote:
MK> Chcem vsetkym objektom typu tpanel vo formulari zmenit farbu na zelenu bez
MK> toho aby som vedel ich nazvy. Ako na to?
MK> Vdaka za kazdu radu.
Odpovedá: Lukas Suchanek
7. 1. 2004 10:59
> Chcem vsetkym objektom typu tpanel vo formulari zmenit farbu na zelenu bez
toho aby som vedel ich nazvy. Ako na to?
procedure NastavFarbu(C:TComponent; farba:TColor);
var j:integer;
begin
with C do
for J:=0 to ComponentCount-1 do
begin
if Components[J] is TPanel then
TPanel(Components[j]).Color:=Farba;
end; // for j
end; // NastavFarbu
procedure TMujForm.MojeFunkce;
begin
NastavFarbu(self, clGreen); // pripadne NastavFarbu(NejakyMujForm,
clGreen);
end;
... aspon doufam, ze to bude takhle nejak, pisu to z hlavy bez kontroly
prekladacem. I kdyby to neslo, tak z toho tu hlavni ideu snad pochopis.
Misto C:TComponent by slo klidne pouzit C:TForm a chodit by to melo taky, s
tim TComponent je to obecnejsi
Odpovedá: Jakub Dusek
7. 1. 2004 11:43
Obecnejsi za predpokladu, ze nejaky TPanel ma jako owner TComponent
Pouzil bych spis TWinControl, a misto ComponentCount a Components
ControlCount a Controls, potom se neprochazeji zbytecne nevizualni
komponenty.
To vse samozrejme za prodpokladu ze je tam natvrdo "is TPanel", slo by
to napsat jeste obecneji.
Jakub Dusek
----------------------------------------------------------------------
web: http://www.corexpert.com, mobile: +420 604 615 795, ICQ: 86063232
odesilani smsek, vizitek, log a melodii, snadna integrace do Vaseho IS
=> Sms GateKeeper, Sms GateKeeper Service
======================================================================
Wednesday, January 7, 2004, 10:41:02 AM, you wrote:
LS> Misto C:TComponent by slo klidne pouzit C:TForm a chodit by to melo taky, s
LS> tim TComponent je to obecnejsi
Odpovedá: Ondrej Kelle
7. 1. 2004 11:35
>> Chcem vsetkym objektom typu tpanel vo formulari zmenit
>> farbu na zelenu
> var i : Integer
> begin
> for i := 0 to Form1.ControlCount - 1 do
> if Form1.Controls[i] is TPanel then
> TPanel(Form1.Controls[i]).Color := clGreen;
> end;
To bude pracovat len s panelmi, u ktorych je Form1 priamy parent. (Napriklad
panely umiestnene na inych paneloch to nespracuje.)
Aby to bolo kompletne, dalo by sa to napisat rekurzivne, ale to uz je asi
jednoduchsie/rychlejsie pouzit Components.
HTH
TOndrej
Odpovedá: Jakub Dusek
7. 1. 2004 12:17
Pravda. Ja to pouzivam takhle, protoze vetsinou potrebuju podobne veci
menit delat jen v jedne urovni, na celem formu by to udelalo peknej
gulas
Jakub Dusek
----------------------------------------------------------------------
web: http://www.corexpert.com, mobile: +420 604 615 795, ICQ: 86063232
odesilani smsek, vizitek, log a melodii, snadna integrace do Vaseho IS
=> Sms GateKeeper, Sms GateKeeper Service
======================================================================
Wednesday, January 7, 2004, 11:09:10 AM, you wrote:
OK> To bude pracovat len s panelmi, u ktorych je Form1 priamy parent.
(Napriklad
OK> panely umiestnene na inych paneloch to nespracuje.)
OK> Aby to bolo kompletne, dalo by sa to napisat rekurzivne, ale to uz je asi
OK> jednoduchsie/rychlejsie pouzit Components.
OK> HTH
OK> TOndrej